class EventBus {
  constructor(limit) {
    //   定义最大存储数量
    this.limit = limit || 10;
    this.events = [];
  }

  // 订阅事件
  on(type, event) {
    if (type) {
      let indexInEvent = this.events.findIndex((item) => item.type === type);
      if (indexInEvent > -1) {
        this.events[indexInEvent].events.push(event);
      } else {
        this.events.push({
          type,
          events: [event],
        });
      }
    }
  }
  // 触发事件
  emit(type) {
    if (type) {
      // 判断当前是否已经有缓存的函数
      const fn = this.has(type) ? this.events[type] : null;
      if (fn && fn.length) {
        fn.forEach((fnc) => fnc());
        return;
      }

      console.warn(`${type} 不存在！`);
    }
  }
  // 判断就当前任务列表中是否有指定事件
  has(type) {
    //   如果有当前type事件，移除所有的事件
    if (this.events.some((item) => item.type === type)) {
      return true;
    }
    return false;
  }
  // 移除事件
  remove(type) {
    if (type && this.has(type)) {
      let curIndex = this.events.forEach((item) => item && item.type === type);
      curIndex > -1 && this.events.splice(curIndex, 1); // 删除指定index的对象数据
    }
    console.warn(`${type} 不存在！`);
  }
}
